import { app, shell, BrowserWindow, ipcMain } from 'electron'
import { join } from 'path'
import { electronApp, optimizer, is } from '@electron-toolkit/utils'
import icon from '../../resources/icon.png?asset'
import path from 'path'
import { WindowOption } from "./common/window"

let mainWindow, loadWin;
// 创建loading窗口
function createLoading(){
  // 创建loading窗口
  loadWin = new BrowserWindow({
    width: 250,
    height: 250,
    frame: false,
    transparent: true,
    show: false,
    resizable: false,
  })
  let winURL
  if(is.dev && process.env['ELECTRON_RENDERER_URL'] && !app.isPackaged){
      // winURL = path.join(__dirname, './renderer/assets/loading.html')
      winURL = path.join(process.env['ELECTRON_RENDERER_URL'], '/src/assets/loading.html')
      console.log(666,winURL)
  }else{
      winURL = path.join(__dirname, './assets/loading.html')
  }
  loadWin.once("show", createWindow)
  // setTimeout(()=>{
  //   createWindow()
  // },5000)
  loadWin.loadURL(winURL)
  loadWin.show()
}

// 创建主窗口
function createWindow() {
  // 创建window实例对象
  mainWindow = new WindowOption()
  // 设置监听事件，比如主进程与渲染进程之间的通信事件
  mainWindow.listen()
  // 创建窗口，默认为主窗口
  mainWindow.createWindow({
    id: "index",
    isMain: true,
    width: 1088, 
    height: 616,
    show: false
  })
  // 创建系统托盘
  mainWindow.createTray()
  mainWindow.main.once("ready-to-show",()=>{
    loadWin.hide()
    loadWin.close()
    mainWindow.main.show()
  })
}

// let progressInterval
// function createWindow(): void {
//   // Create the browser window.
//   const mainWindow = new BrowserWindow({
//     width: 1088, // 窗口宽度
//     height: 616, // 窗口高度
//     show: false, // 是否隐藏窗口，默认展示，不展示看不了内容
//     autoHideMenuBar: true, // 隐藏菜单栏

//     // x: 0, // 窗口左上角x坐标
//     // y: 0, // 窗口左上角y坐标
//     // maxWidth: 1200, // 最大宽度
//     // maxHeight: 800, // 最大高度
//     // minWidth: 900, // 最小宽度
//     // minHeight: 670, // 最小高度
//     resizable: false, // 是否可调整大小
//     frame: false, // 是否显示边框(无边框模式只保留主体部分、标题、icon、菜单栏、收起/全屏/关闭选项等全部隐藏)
//     // transparent: false, // 是否透明(打开开发者模式时，窗口不透明)
//     // title: '项目管理工具', // 窗口标题
//     // movable: true, // 是否可移动
//     // minimizable: true, // 是否可最小化
//     maximizable: false, // 是否可最大化
//     // fullscreenable: true, // 是否可全屏
//     // closable: true, // 是否可关闭
    
//     ...(process.platform === 'linux' ? { icon } : {}), // 设置图标(linux下不设置图标会导致应用图标显示为electron图标)
//     webPreferences: {
//       preload: join(__dirname, '../preload/index.js'),
//       sandbox: false
//     }
//   })

//   mainWindow.on('ready-to-show', () => {
//     mainWindow.show()
//   })

//   mainWindow.webContents.setWindowOpenHandler((details) => {
//     shell.openExternal(details.url)
//     return { action: 'deny' }
//   })

//   // HMR for renderer base on electron-vite cli.
//   // Load the remote URL for development or the local html file for production.
//   if (is.dev && process.env['ELECTRON_RENDERER_URL']) {
//     mainWindow.loadURL(process.env['ELECTRON_RENDERER_URL'])
//   } else {
//     mainWindow.loadFile(join(__dirname, '../renderer/index.html'))
//   }
// }

// 监听应用准备就绪事件
app.whenReady().then(() => {
  // 设置应用的用户模型ID，用于windows系统，windows系统会在任务栏显示图标
  electronApp.setAppUserModelId('com.electron')

  // 默认开发环境下使用F12打开或关闭开发者工具，生产环境下忽略CommandOrControl + R
  app.on('browser-window-created', (_, window) => {
    optimizer.watchWindowShortcuts(window)
  })

  // 调用创建主窗口方法

  app.on('activate', function () {
    // 当所有窗口都被关闭时，重新创建窗口
    if (BrowserWindow.getAllWindows().length === 0) createWindow()
  })
})

app.on('before-quit', (event) => {
  // 清除全局快捷键监听
  console.log(event, 'before-quit')
})

// 当所有窗口都被关闭时退出应用
app.on('window-all-closed', () => {
  if (process.platform !== 'darwin') {
    app.quit()
  }
})

app.on("ready",()=>{
  createLoading()
})